package service

import (
	"context"
	"devops-super/api"
	v1 "devops-super/api/product/v1"
	"devops-super/internal/model/entity"
	"devops-super/internal/model/mymodel"
)

// IDeviceGroup 设备分组服务接口
type IDeviceGroup interface {
	// Add 新增设备分组
	Add(ctx context.Context, in *entity.AppDeviceGroup) (err error)

	// Upt 更新设备分组
	Upt(ctx context.Context, in *entity.AppDeviceGroup) (err error)

	// Del 删除设备分组
	Del(ctx context.Context, id int) (err error)

	// GetPageLst 分页获取设备分组列表
	GetPageLst(ctx context.Context, in *v1.DeviceGroupGetPageLstReq) (out *api.PageLstRes[*mymodel.AppDeviceGroupResponse], err error)

	// GetOne 获取单条设备分组
	GetOne(ctx context.Context, id int) (out *entity.AppDeviceGroup, err error)

	// GetOptions 获取设备分组选项
	GetOptions(ctx context.Context, in *v1.DeviceGroupGetOptionsReq) (out *v1.DeviceGroupGetOptionsRes, err error)
}

var (
	localDeviceGroup IDeviceGroup
)

// DeviceGroup 获取设备分组服务实例
func DeviceGroup() IDeviceGroup {
	if localDeviceGroup == nil {
		panic("implement not found for interface IDeviceGroup, forgot register?")
	}
	return localDeviceGroup
}

// RegisterDeviceGroup 注册设备分组服务实例
func RegisterDeviceGroup(i IDeviceGroup) {
	localDeviceGroup = i
}
